package com.dubbo.mapper.auth;

import com.dubbo.domain.auth.Role;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * 角色表mapper
 * @author chenluqiang
 * @date 2018年12月14日 上午10:24:04 
 *
 */
public interface RoleMapper extends Mapper<Role>{
	
	/**
	 * 根据用户id查询该用户拥有的角色名称。
	 * @author chenluqiang
	 * @date 2018年12月14日 上午10:26:49 
	 * @param userId 用户id
	 * @return
	 */
	@Select("SELECT " + 
			"	( " + 
			"		CASE ure.type " + 
			"		WHEN 1 THEN " + 
			"			'agent' " + 
			"		WHEN 2 THEN " + 
			"			'trader' " + 
			"		WHEN 3 THEN " + 
			"			'electric' " + 
			"		ELSE " + 
			"			'user' " + 
			"		END " + 
			"	) AS roleName " + 
			"FROM " + 
			"	u_role ure " + 
			"LEFT JOIN u_role_user uru ON uru.roleId = ure.id " + 
			"WHERE " + 
			"	uru.userId = #{userId}")
	List<String> getRolesByUserId(@Param("userId") String userId);
	
	/**
	 * 根据用户id查询该用户拥有的角色，并转为实体类。
	 * @author chenluqiang
	 * @date 2018年12月14日 上午10:26:49 
	 * @param userId 用户id
	 * @return
	 */
	@Select("SELECT " + 
			"	ure.* " + 
			"FROM " + 
			"	u_role ure " + 
			"LEFT JOIN u_role_user uru ON uru.roleId = ure.id " + 
			"WHERE " + 
			"	uru.userId = #{userId}")
	List<Role> getRoleListByUserId(@Param("userId") String userId);
}